package com.softer.chengxin.train.dao;

import com.softer.chengxin.common.domin.Page;
import com.softer.chengxin.train.dao.provider.TrainerDaoProvider;
import com.softer.chengxin.train.entity.Trainer;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author Gong Zhiyang
 * @date 2019/1/19
 */
@Mapper
@Repository
public interface TrainerDao {
    /**
     * 新增项目经理培训人员
     *
     * @param trainer 培训人员实体
     * @return 新增结果
     */
    @Insert("insert INTO project_manager_train(name,code,company,gmt_create,gmt_modified,type,remark) VALUES(#{t.name},#{t.code},#{t.company},NOW(),NOW(),#{t.type},#{t.remark})")
    int add(@Param("t") Trainer trainer);

    /**
     * 校验证书编号是否存在
     *
     * @param code 证书编号
     * @return 证书编号
     */
    @Select("SELECT code FROM project_manager_train where `code`=#{code}")
    String checkCode(@Param("code") String code);

    /**
     * 删除项目经理培训人员
     *
     * @param id 人员id
     * @return 结果
     */
    @Delete("DELETE FROM project_manager_train WHERE id=#{id}")
    int delete(@Param("id") int id);

    /**
     * 修改项目经理培训人员
     *
     * @param trainer 项目经理培训人员
     * @return 修改結果
     */
    @Update("UPDATE project_manager_train SET `name`=#{t.name},`code`=#{t.code},company=#{t.company},type=#{t.type},remark=#{t.remark},gmt_modified=NOW() WHERE id=#{t.id}")
    int edit(@Param("t") Trainer trainer);

    /**
     * 查询项目经理培训人员详情
     *
     * @param id 培训人员id
     * @return 项目经理培训人员详情
     */
    @Select("SELECT id,`name`,`code`,company,remark,type FROM project_manager_train WHERE id=#{id}")
    Trainer query(@Param("id") int id);

    /**
     * 查询项目经理培训人员数量
     *
     * @param trainer 查询实体
     * @return 数量
     */
    @SelectProvider(type = TrainerDaoProvider.class, method = "queryListNum")
    int queryListNum(@Param("t") Trainer trainer);

    /**
     * 查询项目经理培训人员列表
     *
     * @param page    分页实体
     * @param trainer 查询实体
     * @return 列表
     */
    @SelectProvider(type = TrainerDaoProvider.class, method = "queryList")
    List<Trainer> queryList(@Param("t") Trainer trainer, @Param("page") Page page);

    /**
     * 查询培训类型下拉列表
     *
     * @return 列表
     */
    @Select("SELECT type FROM project_manager_train GROUP BY type")
    List<String> queryTypeList();
}
